package org.fpp.sqlparse;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.StrUtil;
import net.sf.jsqlparser.expression.StringValue;

import java.util.List;

import static org.fpp.sqlparse.DataModelConstant.*;

/**
 * @author pengpeng_fu@infinova.com.cn
 * @date 2023-12-26 14:41
 */
public class SameMysqlSqlParseFilter implements SqlParseFilter{
    @Override
    public void filterColumnToDdl(TableInfo.ColumnInfo columnInfo, List<String> columnSpecs) {
        if(BooleanUtil.isFalse(columnInfo.getNullable())){
            columnSpecs.add(NOT);
            columnSpecs.add(NULL);
        }
        if(BooleanUtil.isTrue(columnInfo.getAutoIncrement())){
            columnSpecs.add(AUTO_INCREMENT);
        }
        if(StrUtil.isNotBlank(columnInfo.getDefaultValue())){
            columnSpecs.add(DEFAULT);
            if(CollUtil.contains(STRING_TYPE_LIST, s->s.equalsIgnoreCase(columnInfo.getDataType()))){
                columnSpecs.add(new StringValue(columnInfo.getDefaultValue()).toString());
            }else{
                columnSpecs.add(columnInfo.getDefaultValue());
            }
        }
        if(StrUtil.isNotBlank(columnInfo.getComment())){
            columnSpecs.add(DataModelConstant.COMMENT);
            columnSpecs.add(new StringValue(columnInfo.getComment()).toString());
        }
    }

}
